package ljl.alg.wangzheng_camp.round1.bfsdfs;

public class _08_10_flood_fill {
    
    /**
     * 它会不会染成和以前一样的颜色？
     * 假设不会
     * 等会报错我再改
     *
     * 一个简单的 bfs 送给大家
     *
     * 狗逼果然阴了我一手，它企图把白色染成白色，比如，导致我栈溢出
     * 想偷个懒都不行
     *
     * 我说实话我这写法还不如多传点参数快其实我感觉写起来
     * 也不是
     *
     * */
    int[][] image;
    int newColor;
    int oldColor;
    int maxRow, maxCol;
    public int[][] floodFill(int[][] image, int sr, int sc, int newColor) {
        this.oldColor = image[sr][sc];
        if (oldColor == newColor) return image;
        this.image = image;
        this.maxRow = image.length;
        this.maxCol = image[0].length;
        
        this.newColor = newColor;
        bfs(sr, sc);
        return image;
    }
    
    void bfs(int row, int col){
        if (row < 0 || col < 0 || row >= maxRow || col >= maxCol || image[row][col] != oldColor) return;
        image[row][col] = newColor;
        bfs(row + 1, col);
        bfs(row - 1, col);
        bfs(row, col + 1);
        bfs(row, col - 1);
    }
}
